/*******************************************************************************************
 *  Fire.h
 *
 *  Creating and managing Fire object structures.
 *
 *******************************************************************************************/







/*******************************************************************************************
 *  INCLUDES :
 *******************************************************************************************/
#include "BulletMLConsts.h"
#include "BulletMLTypes.h"
#include "Direction.h"
#include "Speed.h"
#include "Bullet.h"
#include "BulletRef.h"







/*******************************************************************************************
 *  TYPE definitions :
 *******************************************************************************************/

/* The FIRE object strucuture definition : */
#ifndef _FIRE_STRUCT_
#define _FIRE_STRUCT_
typedef struct {

	ObjType		otype;					/* The object's type, as in ...   */
										/* ... the BML type enum.         */

	char		*label;					/* The fire object's label.       */

	Direction	*direction;				/* The fire object's direction.   */
	Speed		*speed;					/* The fire object's speed.       */

	Bullet		*bullet;				/* The fired bullet.              */
	BulletRef	*bulletRef;				/* A reference to the need to ... */
										/* ... be fired bullet.           */

} Fire;
#endif







/*******************************************************************************************
 *  Function PROTOTYPES :
 *******************************************************************************************/

/* CONSTRUCTOR and DESTRUCTOR : */
Fire 	*newFire(void);					/* Creates an empty Fire object strucutre. */
void 	freeFire(Fire *f);				/* Destroys a Fire object structure.       */ 


/* FILLING the Fire object structure : */
void 	setFireLabel(Fire *f, char *l);
void 	setFireDirection(Fire *f, Direction *d);
void 	setFireSpeed(Fire *f, Speed *s);
void 	setFireBullet(Fire *f, Bullet *b);
void 	setFireBulletRef(Fire *f, BulletRef *br);
